# -*- coding: utf-8 -*-
"""
Created on Sun Aug 20 19:10:21 2023

@author: skunk69
"""

import json

chinese_name = u'大学生公正世界信念量表'
english_name = 'Just World Scale for College Students'
abbreviation = 'JWS'
category = u'人生价值、态度量表'

outline = u"""公正世界信念是美国心理学家Lerner最早提出的一个概念，其理论核心是：人们相信他们所生活的世界是一个公正的世界，在这个世界中，人们会得到公正的对待，好人得好报，坏人受惩罚，每个人都得其所应得。由于这种公正世界信念能给人一种安全感和对世界的控制感，所以人们极不情愿放弃这样一种信念，当人们遇到不公正的事例时，就会陷人忧虑不安的境地，人们就要通过某种方式(比如，帮助无辜受害者或者责备无辜受害者)来维护自己的公正世界信念。
《大学生公正世界信念量表》是由杜建政、祝振兵和李兴琨于2008年编制的。量表包含3个因子，分别为：“终极公正(ultimate justice)”，反映的是人们认为世界上所有事情的结局终将是公正的；“内在不公正(immanent injustice)”，主要反映的是人们认为已经发生过的或现有的事情是不公正的；“内在公正(immanent justice)"，主要反映的是人们认为已经发生的或现有的事情是公正的。"""

instruction = u"""下面是一些陈述的语句。对其中一些陈述,您可能极为认同，另一些极不认同，还有一些可能持较中立的看法。请仔细阅读这些语句，根据您认同的程度(从“非常同意”到“非常不同意”)，在每题后选择最合适的一项。感谢您的参与和帮助！"""

with open('JWS.txt','r',encoding='utf-8') as f:
    lines = f.readlines()
    f.close()

items = {}
for line in lines:
    key,value = line.strip().split('.',maxsplit=1)
    items[key.strip()] = value.strip()

reverse_items = [3,4,6,10,12,14,19]
scales = [u'终极公正',u'内在不公正',u'内在公正']
scales_items = [
    [5,7,8,9,11,15,17],# 终极公正
    [3,4,6,10,12,14,19],# 内在不公正
    [1,2,13,16,18],# 内在公正
    ]

# check scales_items
print(f'scale length={[len(l) for l in scales_items]}')

check = []
for l in scales_items:
    check = check+l
print(f'len(check)={len(check)}')

# complementary set
check_set = {i for i in sorted(check)}^{i for i in range(1,20)}
print(f'complementary set= {check_set}')

factors = []
factors_scales = []
rating = [u'非常同意',u'同意',u'不能确定',u'不同意',u'非常不同意']
score_rules = list(range(5,0,-1))

contents = {
    'instruction':instruction,
    'items':items,
    'reverse_items':reverse_items,
    'scales':scales,
    'scales_items':scales_items,
    'factors':factors,
    'factors_scales':factors_scales,
    'rating':rating,
    'score_rules':score_rules       
    }

implementation = u"""《大学生公正世界信念量表》属于一个自评量表。"""

reliability = u"""选取在校本科生256人，其中男生141人，女生115人，年龄18~23岁。采用团体施测，发放问卷256份，回收256份，剔除作答不全问卷31份，共得到有效问卷225份。对问卷进行内部一致性信度检验，得到总量表的α系数为0.808。3个因子的内部一致性信度系数分别为：终极公正0.783，内在不公正0.666，内在公正0.640。"""
validity = u"""为了检验所抽取的3个维度是否稳定，采用交叉验证，用不同样本对大学生(291名本科生)公正世界信念结构进行了验证性因素分析，各项拟合指数x2=292.661，df=149，x2/df=1.964，GFI=0.906，RMR=0.054，RMSEA=0.058，IFI=0.863，TLI=0.839，三维模型得到了较理想的拟合。"""
measurements = {'reliability':reliability,'validity':validity}

interpretation = u"""首先将反向条目反向计分，然后将各维度条目相加得到各维度分，所有条目得分之和即为该问卷的总分。总分越高，代表持有俞强的公正世界信念。"""

applications = u"""无常模。"""

this_scale = {
    'chinese_name':chinese_name,
    'english_name':english_name,
    'abbreviation':abbreviation,
    'category':category,
    'outline':outline,
    'contents':contents,
    'implementation':implementation,
    'measurements':measurements,
    'interpretation':interpretation,
    'applications':applications    
    }

with open(abbreviation+'.json','w+',encoding='utf-8') as f:
    json.dump(this_scale,f,indent=2,ensure_ascii=False)